#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//int Max(a,b,c)
//{
//    int max = 0;
//	max = a > b? a:b;
//	max = max > c ? max : c;
//	return max;
//}
//int Min(a, b, c)
//{
//    int min = 0;
//	min = a <b ? a : b;
//	min = min < c ? min : c;
//	return min;
//}
//
//
//
//int main()
//{
//	int x, y, z,mid = 0;
//	scanf("%d%d%d", &x, &y, &z);
//	int max=Max(x, y, z);
//	int min=Min(x, y, z);
//	if (max != x&& min != x)
//	{
//		mid = x;
//	}
//	else if (max != y&& min != y)
//	{
//		mid = y;
//	}
//	else
//	{
//		mid = z;
//	}
//	printf("%d %d %d",max,mid,min);
//	return 0;
//}//我的解法

//int main()
//{
//	int a, b, c = 0;
//	scanf("%d%d%d", &a, &b, &c);
//	if (a < b)
//	{
//		int tmp = a;
//		 a = b;
//		 b = tmp;
//	}
//	if (a <c)
//	{
//		int tmp = a;
//		 a = c;
//		 c = tmp;
//	}
//	if(b<c)
//	{
//		int tmp = b;
//		 b = c;
//		 c = tmp;
//	}
//	printf("%d %d %d", a, b, c);
//	return 0;
//}//标准答案复杂版

//
//int main()
//{
//	int a = 0;
//	for (a = 1; a <= 100; a++)//或(a=3;a<=100;a+=3)
//	{                         //printf("%d ", a);
//		int b = a % 3;
//		if (b == 0)
//		{
//			printf("%d ", a);
//		}
//		
//	}
//	return 0;
//}

//要求：给定两个数，求最大公约数
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int i = 0;
//	scanf("%d%d", &a, &b);
//	if (a < b)
//			{
//				int tmp = a;
//				 a = b;
//				 b = tmp;
//			}
//	for (i = b;1; i--)
//	{
//		if (a % i == 0 && b % i == 0)
//			break;
//	}
//	printf("%d", i);
//	
//	return 0;
//}

//用辗转相除法
int main()
{
	int a = 0;
	int b = 0;
	int i = 0;
	scanf("%d%d", &a, &b);
	while (i=a % b )
	 {
		a = b;
		b = i;
     }
	printf("%d", b);
	return 0;
}
//最大公倍数 ：a*b/最大公约数